/*
 * @Author: 肖思汗 
 * @Date: 2025-06-27 19:43:58 
 * @Last Modified by: xiaosihan
 * @Last Modified time: 2025-09-25 15:16:57
 */


import Taro from "@tarojs/taro";
import { get } from "lodash";
import { makeAutoObservable } from "mobx";
import utils from "./utils";
class UtilsStore {
    constructor() {
        makeAutoObservable(this, {}, { deep: false });

        const windowInfo = Taro.getWindowInfo();

        const { windowHeight, windowWidth, pixelRatio } = windowInfo;

        // 获取胶囊按钮的位置信息
        const menuButtonRect = Taro.getMenuButtonBoundingClientRect();

        this.devicePixelRatio = pixelRatio;

        // 屏幕的高度
        this.windowHeight = windowHeight;
        // 屏幕的宽度
        this.windowWidth = windowWidth;

        this.safeAreaTop = menuButtonRect.top - utils.rpx2px(16);
        // 从windowInfo中获取安全区域底部信息
        this.safeAreaBottom = windowHeight - get(windowInfo, 'safeArea.bottom', 0);

        // 胶囊按钮的宽度
        this.menuButtonWidth = menuButtonRect.width;
        // 胶囊按钮的高度
        this.menuButtonHeight = menuButtonRect.height;

        // 标题栏的高度通常是固定
        this.titleTop = menuButtonRect.top + this.menuButtonHeight + utils.rpx2px(16);
        // this.titleTop = this.safeAreaTop + 44;

        // 底部安全距离 + 底部导航栏的高度
        this.barBottom = this.safeAreaBottom + (this.safeAreaBottom > 0 ? utils.rpx2px(100 + 20) : utils.rpx2px(100 + 20 + 20));

        // 中间的容器高度
        this.containerHeight = this.windowHeight - this.titleTop - this.barBottom;
    }

    devicePixelRatio = 1;  // 设备像素比

    menuButtonWidth = 0; // 胶囊按钮的宽度
    menuButtonHeight = 0; // 胶囊按钮的高度

    windowHeight = 0; // 屏幕的高度
    windowWidth = 0; // 屏幕的宽度

    safeAreaTop = 0; // 顶部安全区域的高度
    safeAreaBottom = 0; // 底部安全区域的高度

    titleTop = 0; // 标题栏的位置
    barBottom = 0; // 底部导航栏的位置

    //中间的容器高度
    containerHeight = 0; // 中间的容器高度
 
}

const utilsStore = new UtilsStore();

export default utilsStore;